package com.codeblock_;

/**
 * @Author 小闽
 * @Date 2024/9/9 11:19
 * @PackageName: com.codeblock_
 * @ClassName: CodeBlockExercise02
 * @Description: 代码块细节练习
 * @Version 1.0
 */
public class CodeBlockExercise02 {
    public static void main(String[] args) {
        // 输出顺序为：
        //1、静态成员sam初始化
        //2、static块执行
        //3、sam1成员初始化
        //4、Test默认构造函数被调用
        Test test = new Test();
    }
}

class Sample{
    /**
     * 有参构造
     * @param s
     */
    Sample(String s){
        System.out.println(s);
    }

    /**
     * 无参构造
     */
    Sample(){
        System.out.println("Sample默认构造函数被调用");
    }
}

class Test{
    // 实例化一个sam1对象
    Sample sam1 = new Sample("sam1成员初始化");
    // 静态实例化一个对象
    static Sample sam = null;
    // 静态代码块
    static {
        System.out.println("static块执行");
        if (sam == null){
            System.out.println("sam is null");
        }
    }

    /**
     * 构造方法
     */
    Test(){
        System.out.println("Test默认构造函数被调用");
    }
}